package org.homeworkteam.Controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.homeworkteam.Service.AiService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.io.IOException;

@CrossOrigin
@RestController
@RequestMapping("/ai")
public class AiController {

    @Autowired
    private AiService aiService;

    //    作业批改
    @PostMapping("/correction")
    public String correction(@RequestBody String filePath) {
        System.out.println("filePath:" + filePath);
        try {

//            filePath 转 JSON 防止转义两次
            JSONObject jsonObject = JSON.parseObject(filePath);
//            文件路径  通过文件路径获取图片
            String filePaths = jsonObject.getString("filePath");

            String type = jsonObject.getString("type");
            String question = "";

            System.out.println(filePaths);

//            根据类型 提问不同的问题
//            1 图片批改   2 中文作文批改  3 英语作文批改  4 翻译  5 儿童绘画批改  6 ai写作
            switch (type) {
                case "1":
                    question = "帮我识别图片中的题目，给出答案与解析，要求在回答的开头单独列出答案";
                    break;
                case "2":
                    question = "帮我识别图片中的作文，并对作文水平进行评级，请严格评价等级，只有少数极为优秀，能够引经据典等能为优秀，将等级分为：优秀、良好、中等、差";
                    break;
                case "3":
                    question = "帮我识别图片中的作文，对作文内容翻译成中文，并对作文水平进行评级，请稍微严格评价等级，不需要将所有的作文都归为好的水平，将等级分为：优秀、良好、中等、差";
                    break;
                case "4":
                    question = "帮我识别图片中的英文，并将英文翻译成中文，告诉我中文，或者是" +
                            "帮我识别图片中的中文，并将中文翻译成英文，告诉我英文";
                    break;
                case "5":
                    question = "对这张绘图进行评级，如果严重不符合儿童作画的直接评为差，请稍微宽松评价等级，因为这是儿童画本，但是不需要将所有的绘图都归为好的水平，将等级分为：优秀、良好、中等、差";
                    break;
                case "6":
                    question = "识别图片中的题目，并了解题目中的要求，帮我写出一篇符合题目要求的作文，要符合主题与字数要求";
                    break;
                default:
                    return "error";
            }
//            获取task_id
            String taskId = aiService.getTaskId(filePaths, question);
            System.out.println("TaskId:" + taskId);

//            通过task_id获取result
            String result = aiService.getRecognitionResult(taskId);

            return result;

        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    //    内容审核
    @PostMapping("/review")
    public String review(@RequestBody String contents) {
//        type 1 文本审核   2 图像审核
//        图片content传路径   文本传文本内容
        //            filePath 转 JSON 防止转义两次
        JSONObject jsonObject = JSON.parseObject(contents);
        System.out.println("contents:" + contents);
//            文件路径  通过文件路径获取图片
        String content = jsonObject.getString("content");
        System.out.println("content:" + content);
        String type = jsonObject.getString("type");
        System.out.println("type:" + type);
        String result = "";
        try {
            switch (type) {
//                文本审核
                case "1":
                    System.out.println("走文本");
                    result = aiService.getTextResult(content);
                    break;
//                图片审核
                case "2":
                    System.out.println("走图片");
                    result = aiService.getImageResult(content);
                    break;
            }
            return result;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    @PostMapping("/test")
    public String test(@RequestBody String filePath) {
        JSONObject jsonObject = JSON.parseObject(filePath);
        return jsonObject.getString("filepath");
    }

}